﻿Public Class xtf_ABMseguimiento

    Dim ulg_row As DataRow
    Dim obj_seguimiento As cls_seguimiento_ = Nothing

    Public Sub New()
        InitializeComponent()
        Cargarusuario()
        Cargarcliente()
        Cargarinterfaz()
        Cargarmenu1()
        cargarCombo(cbo_estado, GetType(cls_seguimiento_.enu_estado))
        cargarCombo(cbo_importancia, GetType(cls_seguimiento_.enu_importancia))
        AgregarValidaciones()
    End Sub

    Private Sub Cargarusuario()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_usuario.EditValue

        Dim usuario_ As New cls_usuario_
        If usuario_.CargarTodos() Then
            For Each usuario As cls_usuario_ In usuario_.Items
                cbo_usuario.Properties.Items.Add(usuario.ToString)
            Next
        End If
        cbo_usuario.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_usuario.EditValue)
    End Sub
    Private Sub Cargarcliente()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_cliente.EditValue
        Dim cliente_ As New cls_cliente_
        If cliente_.CargarTodos(True) Then
            For Each cliente As cls_cliente_ In cliente_.Items
                cbo_cliente.Properties.Items.Add(cliente.ToString)
            Next
        End If
        cbo_cliente.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_cliente.EditValue)
    End Sub
    Private Sub Cargarinterfaz()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_sistema.EditValue
        Dim config_interfaz_ As New cls_config_interfaz_
        If config_interfaz_.CargarTodos() Then
            For Each config_interfaz As cls_config_interfaz_ In config_interfaz_.Items
                cbo_sistema.Properties.Items.Add(config_interfaz.ToString)
            Next
        End If
        cbo_sistema.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_sistema.EditValue)
    End Sub
    Private Sub Cargarmenu1()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_menu1.EditValue
        Dim STRgrupo As String = ""
        Dim STRsubGrupo As String = ""
        Dim obj_modulo_ As New cls_modulo_
        If obj_modulo_.CargarTodosOrdenado Then
            For Each modulo As cls_modulo_ In obj_modulo_.Items
                If STRgrupo <> modulo.grupo Then
                    STRgrupo = modulo.grupo
                    cbo_menu1.Properties.Items.Add(modulo.grupo)
                End If
                If STRsubGrupo <> modulo.subgrupo Then
                    STRsubGrupo = modulo.subgrupo
                    cbo_menu2.Properties.Items.Add(modulo.subgrupo)
                End If
            Next
        End If
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_seguimiento = New cls_seguimiento_
            btn_Registro.Enabled = False
            dtp_estadofecha.DateTime = Now
            dtp_fecha.DateTime = Now
            dtp_PRGpagadofecha.DateTime = Now
            dtp_vencimientoRE.DateTime = Now
            dtp_vencimiento.DateTime = Now
            dtp_finalizadoFecha.DateTime = Now

            tme_hora.Time = Now
            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef seguimiento As cls_seguimiento_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_seguimiento) Then
            obj_seguimiento = New cls_seguimiento_
        End If
        obj_seguimiento = seguimiento
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_seguimiento.ToString
        txt_ID.Text = obj_seguimiento.idseguimiento
        cbo_estado.EditValue = obj_seguimiento.estado
        dtp_PRGpagadofecha.DateTime = obj_seguimiento.pagadofecha
        chk_PRGpagado.Checked = obj_seguimiento.pagado
        txt_total.Text = obj_seguimiento.PRGimporte
        txt_PRGvalorhora.Text = obj_seguimiento.PRGvalorhora
        txt_PRGhoras.Text = obj_seguimiento.PRGhoras
        txt_adjuntar.Tag = obj_seguimiento.adjunto
        txt_adjuntar.Text = obj_seguimiento.adjuntoNombre
        txt_orden.Text = obj_seguimiento.orden
        'chk_finalizado.Checked = obj_seguimiento.finalizado
        cbo_importancia.EditValue = obj_seguimiento.importancia
        dtp_estadofecha.DateTime = obj_seguimiento.estadofecha
        txt_texto.Text = obj_seguimiento.texto
        txt_referencia.Text = obj_seguimiento.referencia
        cbo_menu2.EditValue = obj_seguimiento.menu2
        cbo_menu1.EditValue = obj_seguimiento.menu1
        cbo_sistema.Text = obj_seguimiento.sistema
        cbo_cliente.Text = obj_seguimiento.clienteSTR
        cbo_usuario.Text = obj_seguimiento.usuarioSTR
        tme_hora.Time = obj_seguimiento.hora
        dtp_fecha.DateTime = obj_seguimiento.fecha
        dtp_vencimiento.DateTime = obj_seguimiento.vencimiento
        dtp_vencimientoRE.DateTime = obj_seguimiento.vencimientoRe
        dtp_finalizadoFecha.DateTime = obj_seguimiento.finalizadofecha
        chk_finalizado.Checked = obj_seguimiento.finalizado

        btn_Registro.Enabled = False


        Me.Show()

    End Sub

    Public Overrides Function ComprobarDatos() As Boolean
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then

            obj_seguimiento.estado = cbo_estado.EditValue
            obj_seguimiento.pagadofecha = dtp_PRGpagadofecha.DateTime
            obj_seguimiento.pagado = chk_PRGpagado.Checked
            obj_seguimiento.PRGimporte = txt_total.Text
            obj_seguimiento.PRGvalorhora = txt_PRGvalorhora.Text
            obj_seguimiento.PRGhoras = txt_PRGhoras.Text
            obj_seguimiento.adjunto = txt_adjuntar.Tag
            obj_seguimiento.adjuntoNombre = txt_adjuntar.Text

            obj_seguimiento.orden = txt_orden.Text
            'chk_finalizado.Checked = obj_seguimiento.finalizado
            obj_seguimiento.importancia = cbo_importancia.EditValue
            obj_seguimiento.estadofecha = dtp_estadofecha.DateTime
            obj_seguimiento.texto = txt_texto.Text
            obj_seguimiento.referencia = txt_referencia.Text
            obj_seguimiento.menu2 = cbo_menu2.Text
            obj_seguimiento.menu1 = cbo_menu1.Text
            obj_seguimiento.sistema = cbo_sistema.Text
            obj_seguimiento.clienteSTR = cbo_cliente.Text
            obj_seguimiento.usuarioSTR = cbo_usuario.Text
            obj_seguimiento.hora = tme_hora.Time
            obj_seguimiento.fecha = dtp_fecha.DateTime
            obj_seguimiento.vencimiento = dtp_vencimiento.DateTime
            obj_seguimiento.vencimientoRe = dtp_vencimientoRE.DateTime
            obj_seguimiento.finalizadofecha = dtp_finalizadoFecha.DateTime
            obj_seguimiento.finalizado = chk_finalizado.Checked


            If txt_ID.Text = "" Then
                obj_seguimiento.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADOseguimiento_).AgregarItem(obj_seguimiento)
                End If
                Modificar(obj_seguimiento, frm_listado, ulg_row)
            Else
             
             

                obj_seguimiento.Modificar()
                If frm_listado.Visible Then
                    CType(frm_listado, xtf_LISTADOseguimiento_).ModificarItem(obj_seguimiento, ulg_row)
                End If
                Modificar(obj_seguimiento, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    'Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
    '    If Not IsNothing(obj_seguimiento.registro) Then
    '        Dim ABMRegistro As New xtf_ABMRegistro(obj_seguimiento.registro)
    '        If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
    '            flg_Modificado = True
    '        End If
    '    End If
    'End Sub


    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

    Private Sub txt_adjuntar_ButtonClick(ByVal sender As Object, ByVal e As DevExpress.XtraEditors.Controls.ButtonPressedEventArgs) Handles txt_adjuntar.ButtonClick
        Select Case e.Button.ToolTip
            Case "Guardar como..."
                If Not IsNothing(txt_adjuntar.Tag) Then
                    Dim SFD As New SaveFileDialog
                    SFD.Filter = "Todos los archivos (*.*)|*.*"
                    SFD.FileName = txt_adjuntar.Text
                    If SFD.ShowDialog = Windows.Forms.DialogResult.OK Then
                        byteArrayTofile(txt_adjuntar.Tag, SFD.FileName)
                    End If
                End If
            Case "Adjuntar archivo..."
                Dim OFD As New OpenFileDialog
                OFD.Filter = "Todos los archivos (*.*)|*.*"
                If OFD.ShowDialog = Windows.Forms.DialogResult.OK Then
                    txt_adjuntar.Text = OFD.SafeFileName
                    txt_adjuntar.Tag = fileToByteArray(OFD.FileName)
                End If
            Case "Eliminar adjunto..."
                txt_adjuntar.Text = ""
                txt_adjuntar.Tag = Nothing
        End Select
    End Sub

    Public Function fileToByteArray(ByVal filepath As String) As Byte()
        ' Open a file that is to be loaded into a byte array
        Dim oFile As System.IO.FileInfo
        oFile = New System.IO.FileInfo(filepath)

        Dim oFileStream As System.IO.FileStream = oFile.OpenRead()
        Dim lBytes As Long = oFileStream.Length

        Dim fileData(lBytes - 1) As Byte
        If (lBytes > 0) Then
            ' Read the file into a byte array
            oFileStream.Read(fileData, 0, lBytes)
            oFileStream.Close()
        End If
        Return fileData
    End Function

    Public Function byteArrayTofile(ByVal byteArrayIn As Byte(), ByVal file As String) As Boolean
        Try
            Dim byteData() As Byte = byteArrayIn
            ' Create a file and write the byte data to a file.
            Dim oFileStream As System.IO.FileStream
            oFileStream = New System.IO.FileStream(file, System.IO.FileMode.Create)
            oFileStream.Write(byteData, 0, byteData.Length)
            oFileStream.Close()
        Catch ex As Exception
            Return False
        End Try
        Return True
    End Function

    Private Sub chk_finalizado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chk_finalizado.CheckedChanged
        dtp_finalizadoFecha.Enabled = chk_finalizado.Checked
        dtp_finalizadoFecha.DateTime = Now
    End Sub

    Private Sub dtp_vencimiento_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtp_vencimiento.EditValueChanged
        dtp_vencimientoRE.DateTime = dtp_vencimiento.DateTime
    End Sub

    Private Sub chk_PRGpagado_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles chk_PRGpagado.CheckedChanged
        dtp_PRGpagadofecha.Enabled = chk_PRGpagado.Checked
        dtp_PRGpagadofecha.DateTime = Now
    End Sub

    Private Sub txt_adjuntar_EditValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txt_adjuntar.EditValueChanged

    End Sub
End Class